import "../base.api"

type (
    DashboardInfo {
        BaseIDInfo
    }

    ChartsReq {
        StartDate *string `json:"start_date"`

        EndDate *string `json:"end_date"`

        // 租户id
        OrganizationId  *uint64 `json:"organizationId,optional"`

        Wxid  *string `json:"wxid,optional"`
    }
    ChartsResp {
        BaseDataInfo

        Data *ChartsData `json:"data"`
    }

    ChartsData {
        AiResponse *ChartsUint `json:"ai_response"`
        SopRun *ChartsUint `json:"sop_run"`
        TotalFriend *ChartsUint `json:"total_friend"`
        TotalGroup *ChartsUint `json:"total_group"`
        AccountBalance *ChartsUint `json:"account_balance"`
        ConsumeToken *ChartsUint `json:"consume_token"`
        ActiveUser *ChartsUint `json:"active_user"`
        NewUser *ChartsInt `json:"new_user"`
        LabelDist []LabelsData `json:"label_dist"`
    }

    ChartsUint {
        Count uint64 `json:"count"`
        Rate *float32 `json:"rate"`
        Label []string `json:"label"`
        Val []uint64 `json:"val"`
        LabelText string `json:"labelText"`
        Tip *string `json:"tip"`
    }

    ChartsInt {
        Count int64 `json:"count"`
        Rate *float32 `json:"rate"`
        Label []string `json:"label"`
        Val []int64 `json:"val"`
        LabelText string `json:"labelText"`
        Tip *string `json:"tip"`
    }

    LabelsData {
        Value uint64 `json:"value"`
        Name string `json:"name"`
    }

    WxReq {
        PageInfo

        EndDate *string `json:"end_date"`

        // 租户id
        OrganizationId  *uint64 `json:"organizationId,optional"`

        Wxid  *string `json:"wxid,optional"`
    }

    WxResp {
        BaseDataInfo

        Data WxList `json:"data"`
    }

    WxList {
        BaseListInfo

        Data  []WxData  `json:"data"`
    }

    WxData {
        Nickname string `json:"nickname"`
        TotalFriend uint64 `json:"total_friend"`
        TotalGroup uint64 `json:"total_group"`
        InteractionRate float32 `json:"interaction_rate"`
    }
)

@server(
	jwt: Auth
    group: dashboard
    middleware: Authority
)

service Wechat {
    // get charts | 获取图表数据
    @handler getCharts
    post /dashboard/charts (ChartsReq) returns (ChartsResp)

    // get wxs | 获取图表数据
    @handler getWxs
    post /dashboard/wx (WxReq) returns (WxResp)
}