from pot_libs.sanic_api import summary, description
from unify_api.constants import PRODUCT
from unify_api.modules.shidianu.components.algorithm_cps import (
    AlgorithmOutput,
    AlgorithmInput, WcReq, WcResp, AbcResp, AbcReq,
)
from unify_api.modules.shidianu.procedures.analysis_result_service import \
    wave_curve_service_new15, alarm_behavior_curve_service
from unify_api.modules.shidianu.procedures.output_result import algorithm_result_to_front
from unify_api.utils.time_format import srv_time


@summary("识电U识别结果输出接口")
@description("识电U")
async def post_algorithm_output(req, body: AlgorithmInput) -> AlgorithmOutput:
    point_id = body.point_id
    req_date = body.req_date
    product_id = 4  # PRODUCT.get(req.host)
    user_id = req.ctx.user_id
    detail = body.detail
    return await algorithm_result_to_front(point_id, req_date, user_id, product_id, detail)


@summary("识电u-行为曲线")
async def post_wave_curve(req, body: WcReq) -> WcResp:
    point_id = body.point_id
    req_date = body.req_date
    product = body.product
    return await wave_curve_service_new15(point_id, req_date, product)


@summary("识电u-用电行为-近30天统计")
async def post_alarm_behavior_curve(req, body: AbcReq) -> AbcResp:
    point_id = body.point_id
    product = body.product
    now_date, timestamp = srv_time()
    req_date = now_date[:10]
    return await alarm_behavior_curve_service(point_id, req_date, product)


