Data Warehouse(完成)

数仓


数仓外部接口0107

<h2>泰国数仓KPI功能接口说明文档</h2> <p>[TOC]</p> <table> <thead> <tr> <th></th> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>KPI首页相关接口</td> <td>chen</td> <td>2021.11.24</td> <td>初稿</td> </tr> <tr> <td>KPI首页相关接口v1.0.1</td> <td>chen</td> <td>2021.11.24</td> <td>每个接口较大更新</td> </tr> <tr> <td>KPI首页相关接口v1.0.2</td> <td>chen</td> <td>2021.11.30</td> <td>二级页面,三级页面初稿</td> </tr> <tr> <td>KPI首页相关接口v1.0.3</td> <td>chen</td> <td>2021.12.09</td> <td>FMS类和Vehicle类返回格式修改,注</td> </tr> <tr> <td>KPI首页相关接口v1.0.4</td> <td>chen</td> <td>2021.12.13</td> <td>更新三级页面返回数据格式</td> </tr> <tr> <td>KPI首页相关接口v1.0.5</td> <td>chen</td> <td>2021.12.20</td> <td>增加登录,权限管理</td> </tr> </tbody> </table> <p>注:二.3.(8)stopping reason和二.4.(2)格式待定</p> <p>email:fuchang.chen@westwell-lab.com</p> <h3>一,KPI首页相关接口</h3> <h4>1,请求时间段内KPI值</h4> <p>http GET <a href="http://serveraddr/kpi/tend">http://serveraddr/kpi/tend</a></p> <p>request</p> <pre><code class="language-json">{ "kpi_name":"CycleTime", "time": { "start_time":0, "end_time":0 } }</code></pre> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>kpi_name</td> <td>str</td> <td>可取值:</td> </tr> <tr> <td></td> <td></td> <td>CycleTime:作业时长</td> </tr> <tr> <td></td> <td></td> <td>StoppingTime:suspend时长</td> </tr> <tr> <td></td> <td></td> <td>Mileage:里程</td> </tr> <tr> <td></td> <td></td> <td>MoveBox:移动箱子数量</td> </tr> <tr> <td>start_time</td> <td>int</td> <td>开始时间(时间戳)</td> </tr> <tr> <td>end_time</td> <td>int</td> <td>结束时间(时间戳)</td> </tr> <tr> <td></td> <td></td> <td></td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "result": { "kpi_name":"CycleTime", "value":1232, "tend_persent": 12.1, "tend":1, "tend_value": 33 }, "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>kpi_name</td> <td>str</td> <td>取值:CycleTime、StoppingTime、Mileage、MoveBox</td> </tr> <tr> <td>value</td> <td>int</td> <td>结果值, 时间戳(CycleTime)int时间戳(StoppingTime),int(Mileage), int(MoveBox)</td> </tr> <tr> <td>tend_persent</td> <td>float</td> <td>增长百分比</td> </tr> <tr> <td>tend</td> <td>int</td> <td>增长趋势,取值 1, 0, -1</td> </tr> <tr> <td>tend_value</td> <td>int</td> <td>增长趋势变化值</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码,正常0,其他错误非0</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误信息描述,正常为空</td> </tr> </tbody> </table> <h4>2,饼图Stopping Reason (Time Distribution)</h4> <p>http GET <a href="http://serveraddr/kpi/stopreason">http://serveraddr/kpi/stopreason</a></p> <p>request</p> <pre><code>{ "kpi_name": "StoppingReason", "time": { "start_time": 0, "end_time": 0 } }</code></pre> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>kpi_name</td> <td>str</td> <td>可取值:StoppingReason, TimeDIstribute</td> </tr> <tr> <td>start_time</td> <td>int</td> <td>开始时间(时间戳)</td> </tr> <tr> <td>end_time</td> <td>int</td> <td>结束时间(时间戳)</td> </tr> <tr> <td></td> <td></td> <td></td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "kpi_name": "StoppingReason", "result":[ {"name":"No path found", "":121 }, {"name":"Obstacle", "value":212 }, {"name":"Out of path", "value":311 } ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>kpi_name</td> <td>str</td> <td>饼图kpi类型StoppingReason,TimeDistribution</td> </tr> <tr> <td>name</td> <td>str</td> <td>类型</td> </tr> <tr> <td>value</td> <td>int</td> <td>值</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码,正常0,其他错误非0</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误信息描述,正常为空</td> </tr> </tbody> </table> <h4>3,Mileage</h4> <p>http GET <a href="http://serveraddr/kpi/at">http://serveraddr/kpi/at</a></p> <p>根据AT请求时间段内的KPI数据</p> <p>move_box,speed</p> <p>request </p> <pre><code>{ "AT": [ "AT01", "AT02" ], "time": { "start_time": 0, "end_time": 0 } }</code></pre> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>start_time</td> <td>int</td> <td>开始时间(时间戳)</td> </tr> <tr> <td>end_time</td> <td>int</td> <td>结束时间(时间戳)</td> </tr> <tr> <td></td> <td></td> <td></td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "result": [ {"keyname": 'AT01', "move": 32, "speed": 7.0}, {"keyname": 'AT02', "move": 40, "speed": 8.0}, {"keyname": 'AT03', "move": 25, "speed": 5.2}, {"keyname": 'AT04', "move": 20, "speed": 3.2}, {"keyname": 'AT05', "move": 32, "speed": 7.0} ], "unit": {"move":"move", "speed":"km/h"} "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>keyname</td> <td>str</td> <td>车编号</td> </tr> <tr> <td>move</td> <td>int</td> <td>箱子数</td> </tr> <tr> <td>speed</td> <td>float</td> <td>车速度</td> </tr> <tr> <td>unit</td> <td>str</td> <td>单位</td> </tr> <tr> <td>result</td> <td>列表</td> <td>结果</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码,正常0,其他错误非0</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误信息描述,正常为空</td> </tr> </tbody> </table> <h3>二,二级页面</h3> <h4>1,请求fliter</h4> <p>POST <a href="http://serveraddr/kpi/filter">http://serveraddr/kpi/filter</a></p> <p>request</p> <pre><code class="language-json">{ "prj": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>prj</td> <td>是</td> <td>str</td> <td>项目名</td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "filter": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>keyname</td> <td>str</td> <td>车编号</td> </tr> <tr> <td>move</td> <td>int</td> <td>箱子数</td> </tr> <tr> <td>speed</td> <td>float</td> <td>车速度</td> </tr> <tr> <td>unit</td> <td>str</td> <td>单位</td> </tr> <tr> <td>result</td> <td>列表</td> <td>结果</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码,正常0,其他错误非0</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误信息描述,正常为空</td> </tr> </tbody> </table> <h4>2,卡片数据</h4> <p>fms或vehicle页卡片数据</p> <p>POST <a href="http://serveraddr/kpi/total">http://serveraddr/kpi/total</a></p> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "FMS" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>FMS,Vehicle</td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code": 0, "err_info": "", "result": [ { "description": "Number of boxes completed per hour", "kpi_name": "Productivity", "tend": 1, "tend_persent": 13, "tend_value": 2, "value": 18 }, { "description": "", "kpi_name": "CycleTime", "tend": 1, "tend_persent": 12, "tend_value": 127, "value": 1200 }, { "description": "Time to complete moving a box", "kpi_name": "TurnaroundTime", "tend": -1, "tend_persent": 15, "tend_value": 109, "value": 1180 }, { "description": "Distance travelled, including forward and backward", "kpi_name": "Mileage", "tend": 1, "tend_persent": 7, "tend_value": 195, "value": 2854 }, { "description": "Number of boxes completed", "kpi_name": "MoveBox", "tend": 1, "tend_persent": 11, "tend_value": 25, "value": 138 }, { "description": "Ratio between the number of times waiting at TSL and total numbers of vessel discharging cycles ", "kpi_name": "TslUsage", "tend": -1, "tend_persent": 13, "tend_value": 1, "value": 5 }, { "description": "Ratio between the number of times waitg at TSD and total numbers of vessel loading cycles ", "kpi_name": "TsdUsage", "tend": -1, "tend_persent": 10, "tend_value": 2, "value": 30 }, { "description": "Ratio between the number of times waiting at EWA and total numbers of vessel discharging to FL cycles ", "kpi_name": "EwaUsage", "tend": -1, "tend_persent": 8, "tend_value": 3, "value": 25 }, { "description": "Ratio between the number of times waiting at LWA and total numbers of vessel loading cycles", "kpi_name": "LwaUsage", "tend": 1, "tend_persent": 13, "tend_value": 351, "value": 2561 }, { "description": "", "kpi_name": "Junction", "tend": -1, "tend_persent": 3, "tend_value": 3, "value": 20 } ] }</code></pre> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">err_code</td> <td style="text-align: left;">错误码</td> <td style="text-align: left;">Int</td> <td>正常0,其他错误非0</td> </tr> <tr> <td style="text-align: left;">err_info</td> <td style="text-align: left;">错误信息</td> <td style="text-align: left;">str</td> <td>正常为空</td> </tr> <tr> <td style="text-align: left;">description</td> <td style="text-align: left;">描述含义</td> <td style="text-align: left;">str</td> <td>-</td> </tr> <tr> <td style="text-align: left;">kpi_name</td> <td style="text-align: left;">卡片类型</td> <td style="text-align: left;">str</td> <td>-</td> </tr> <tr> <td style="text-align: left;">tend</td> <td style="text-align: left;">增长趋势</td> <td style="text-align: left;">Int</td> <td>取值 1, 0, -1</td> </tr> <tr> <td style="text-align: left;">tend_persent</td> <td style="text-align: left;">增长百分比</td> <td style="text-align: left;">Float</td> <td>-</td> </tr> <tr> <td style="text-align: left;">tend_value</td> <td style="text-align: left;">增长趋势变化值</td> <td style="text-align: left;">Int</td> <td>-</td> </tr> <tr> <td style="text-align: left;">value</td> <td style="text-align: left;">当前值</td> <td style="text-align: left;">Int</td> <td>时间戳(CycleTime)int时间戳(StoppingTime),int(Mileage),int(MoveBox)</td> </tr> </tbody> </table> <h4>3,FMS类</h4> <p>http POST <a href="http://serveraddr/kpi/detial/fms">http://serveraddr/kpi/detial/fms</a></p> <h5>(1)Cycle Time</h5> <p>request</p> <pre><code class="language-json">{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Cycle Time" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Cycle Time", "result":{ "names": ['QC_1_duration', 'QC_2_duration', 'TSD_duration', 'TSL_duration', 'FL_1_duration', 'FL_2_duration', 'RTGC_1_duration', 'RTGC_2_duration', 'EWA_duration'], "durations": [[190, 0, 0, 0, 0, 0, 438, 118, 0], [0, 0, 0, 0, 0, 0, 465, 498, 0], [0, 0, 0, 0, 0, 0, 618, 582, 0]] }, "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(2)Productivity</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Productivity" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Productivity", "result":[ { "AT":"AT01", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT02", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT03", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], } ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(3)Turnaround Time</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Turnaround Time" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Turnaround Time", "result":[ { "AT":"AT01", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT02", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT03", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], } ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(4)Mileage</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Mileage" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Mileage", "result":[[0.0, 966.1377441705429, 966.1377441705429], [144.62277914954035, 153.56851806600676, 298.1912972155471], [203.6298862008084, 246.65028469393692, 450.28017089474537]], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>[]</td> <td>[带箱里程,不带箱里程,总里程] (米)</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(5)Move Box</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "move box" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "move box", "result":[ { "AT":"AT01", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT02", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT03", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], } ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>[]</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>data</td> <td>[]</td> <td>[日期,装箱数]</td> <td></td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(6)TSL Usage,TSD Usage,EWA Usage,LWA Usage</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "TSL Usage" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "TSL Usage", "result":{ "percent": 12.1, "TimeSpend": 6664 }, "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>percent</td> <td>float</td> <td>占比(%)</td> <td>0-100</td> </tr> <tr> <td>TimeSpend</td> <td>float</td> <td>time spend量(秒)</td> <td>&gt;=0</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(7)Junction</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Junction" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Junction", "result":{ "avg_time":[ ['12-01', 1797, 2688], ['12-02', 6687, 9996],['12-03', 6567, 8880] ], "times": [ ['FG10', 456, 306], ['HJ11', 462, 253], ['AA10', 3158, 2824], ['DE11', 1081, 733] ], "junction_sort": }, "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>avg_time</td> <td>int</td> <td>经过junction的时长[日期,拐弯数据,拐弯和直走数据]</td> <td>&gt;0</td> </tr> <tr> <td>times</td> <td>int</td> <td>经过次数 [类型,]</td> <td>&gt;0</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(8)Stopping reason</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Stopping reason" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Stopping reason", "result":[ {"type":"No path found", "persent": 12.2, "mins_total":112, "turn_mins":2.3} ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h4>4,Vehicle类</h4> <p>http POST <a href="http://serveraddr/kpi/detial/vehicle">http://serveraddr/kpi/detial/vehicle</a></p> <h5>(1)Travelling speed,Battery Power,Fault Rate,MMBF,Recovery Time, Fault Rate ,MMBF</h5> <p>request </p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Travelling speed" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Travelling speed,Battery Power,Fault Rate,MMBF,Recovery Time,Fault Rate ,MMBF</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Travelling speed", "result":[ { "AT":"AT01", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT02", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], }, { "AT":"AT03", "data":[["Jun.01",22],["Jun.02",22],["Jun.03",22]], } ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(2)Time Distribution</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Time Distribution" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Time Distribution", "result":[ {"time_type":"Off-Duty","percent":32},{"time_type":"Idle","percent":22} ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h5>(3)Running Hour,Mileage</h5> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Running Hour" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> </tbody> </table> <p>response</p> <pre><code class="language-json">{ "KPI_detial": "Running Hour", "result":[ ["AT01", 12354], ["AT02", 12345] ], "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> </tbody> </table> <h3>三,三级页面</h3> <h4>1,Cycle Time Breakdown</h4> <p>http POST <a href="http://serveraddr/detial/fms/cycletime">http://serveraddr/detial/fms/cycletime</a></p> <p>request</p> <pre><code>{ "filters": { "Cycle Type":[], "Twin/Single":[], "Dual Move": [], "Optional Checkpoint": [], "QC": [], "RTGC":[] }, "time":{ "start_time": 0, "end_time": 0 }, "Vessel": ["Vessel01","Vessel02"], "AT": "", "KPI_detial": "Cycle Time Breakdown", "page_num": 1, "page_size": 20 }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>filters</td> <td>否</td> <td>-</td> <td>过滤器</td> <td>-</td> </tr> <tr> <td>start_time</td> <td>是</td> <td>int</td> <td>开始时间</td> <td>时间戳</td> </tr> <tr> <td>end_time</td> <td>是</td> <td>int</td> <td>结束时间</td> <td>时间戳</td> </tr> <tr> <td>Vessel</td> <td>否</td> <td>str</td> <td>选择船舶</td> <td>-</td> </tr> <tr> <td>AT</td> <td>否</td> <td>str</td> <td>车辆选择</td> <td>-</td> </tr> <tr> <td>KPI_detial</td> <td>是</td> <td>str</td> <td>请求卡片数据类型</td> <td>Cycle Time</td> </tr> <tr> <td>page_num</td> <td>是</td> <td>int</td> <td>分页查询第几页</td> <td>&gt;1</td> </tr> <tr> <td>page_size</td> <td>是</td> <td>int</td> <td>分页查询页显示量</td> <td>&gt;1</td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "KPI_detial": "Cycle Time Breakdown", "result":[ {"Cycle No.":"001","AT No.":"AT01","Task 1":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 2":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 3":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140 }, {"Cycle No.":"001","AT No.":"AT02","Task 1":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 2":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 3":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140 }, {"Cycle No.":"001","AT No.":"AT01","Task 1":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 2":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 3":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140 }, {"Cycle No.":"001","AT No.":"AT05","Task 1":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 2":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 3":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140 }, {"Cycle No.":"001","AT No.":"AT01","Task 1":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 2":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140,"Task 3":"To QCTP", "Traveling":123, "Waiting":24, "Serving":140 } ], "total_page": 100, "err_code": 0, "err_info": "" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>可取值</th> </tr> </thead> <tbody> <tr> <td>KPI_detial</td> <td>str</td> <td>对应的类型</td> <td>Cycle Time Breakdown</td> </tr> <tr> <td>result</td> <td>-</td> <td>对应的kpi结果</td> <td>-</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>-</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>错误描述</td> <td>-</td> </tr> <tr> <td>total_page</td> <td>int</td> <td>总页数</td> <td>-</td> </tr> </tbody> </table> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td>Cycle No.</td> <td>str</td> <td>Cycle编号</td> </tr> <tr> <td>AT No.</td> <td>str</td> <td>车编号</td> </tr> <tr> <td>Task 1</td> <td>str</td> <td>任务1</td> </tr> <tr> <td>Traveling1</td> <td>int</td> <td>行驶时长(秒)</td> </tr> <tr> <td>Waiting1</td> <td>int</td> <td>等待时长(秒)</td> </tr> <tr> <td>Serving1</td> <td>int</td> <td>服务时长(秒)</td> </tr> <tr> <td>Task 2</td> <td>str</td> <td>任务2</td> </tr> <tr> <td>Traveling2</td> <td>int</td> <td>行驶时长(秒)</td> </tr> <tr> <td>Waiting2</td> <td>int</td> <td>等待时长(秒)</td> </tr> <tr> <td>Serving2</td> <td>int</td> <td>服务时长(秒)</td> </tr> <tr> <td>Task 3</td> <td>str</td> <td>任务3</td> </tr> <tr> <td>Traveling3</td> <td>int</td> <td>行驶时长(秒)</td> </tr> <tr> <td>Waiting3</td> <td>int</td> <td>等待时长(秒)</td> </tr> <tr> <td>Serving3</td> <td>int</td> <td>服务时长(秒)</td> </tr> </tbody> </table> <h3>四,登录</h3> <h4>1,登录</h4> <p>http POST <a href="http://0.0.0.0:8001/api/user/login">http://0.0.0.0:8001/api/user/login</a></p> <p>request</p> <pre><code>{ "username": "admin", "password": "12345678" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>username</td> <td>是</td> <td>str</td> <td>用户名</td> </tr> <tr> <td>password</td> <td>是</td> <td>str</td> <td>密码</td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code": 0, "err_info": "", "token": "eyJ0eXAiOiJqd3QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InpjYyIsInJvbGUiOiJhZG1pbiIsImV4cCI6MTY0MDU3MjY5NH0.LNL9q4vFYGYRegdxd_0vDv5BEc77dtDDEez8jgLCF4w", "username": "zcc", "role": "admin" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>username</td> <td>str</td> <td>用户名</td> <td>-</td> </tr> <tr> <td>token</td> <td>str</td> <td>会话token</td> <td>-</td> </tr> <tr> <td>role</td> <td>str</td> <td>角色</td> <td>Admin,Staff</td> </tr> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>0成功,非0错误</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>描述信息</td> <td>-</td> </tr> </tbody> </table> <h4>2,邮箱验证</h4> <p>http POST <a href="http://0.0.0.0:8001/api/user/auth_code">http://0.0.0.0:8001/api/user/auth_code</a></p> <p>request</p> <pre><code class="language-json">{ "username":"", "email":"" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>username</td> <td>是</td> <td>str</td> <td>用户名</td> <td>最少三个字符</td> </tr> <tr> <td>email</td> <td>是</td> <td>str</td> <td>用户接受验证码的邮箱地址</td> <td>最少六个字符</td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code":0, "err_info":"", "auth_code":0000, }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>0成功,非0错误</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>描述信息</td> <td>-</td> </tr> <tr> <td>auth_code</td> <td>str</td> <td>邮箱验证码</td> <td></td> </tr> </tbody> </table> <h4>3,重置密码</h4> <p>http POST <a href="http://0.0.0.0:8001/api/user/resetpwd">http://0.0.0.0:8001/api/user/resetpwd</a></p> <p>request</p> <pre><code>{ "email":"", "auth_code":"0000", "password":"" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>email</td> <td>是</td> <td>str</td> <td>邮箱地址</td> <td>email</td> </tr> <tr> <td>auth_code</td> <td>是</td> <td>str</td> <td>邮箱验证码</td> <td>-</td> </tr> <tr> <td>password</td> <td>是</td> <td>str</td> <td>密码</td> <td>最少六个字符</td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code":0, "err_info":"" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>0成功,非0错误</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>描述信息</td> <td>-</td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <h3>五,账号管理</h3> <h4>1,change password/email</h4> <p>http POST <a href="http://0.0.0.0:8001/api/user/change">http://0.0.0.0:8001/api/user/change</a></p> <p>request</p> <pre><code class="language-json">{ "change_type":"password", "change_value":"" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>change_type</td> <td>是</td> <td>str</td> <td>修改密码或邮箱</td> <td>password,email</td> </tr> <tr> <td>change_value</td> <td>是</td> <td>str</td> <td>修改的值</td> <td>-</td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code":0, "err_info":"" }</code></pre> <h4>2,添加,编辑,删除用户</h4> <p>http POST <a href="http://0.0.0.0:8001/api/user/edit">http://0.0.0.0:8001/api/user/edit</a></p> <p>request</p> <pre><code>{ "operation": "add", "user_info": { "id": "user_name":"", "email": "", "role": "", "password":"" } }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>operation</td> <td>是</td> <td>str</td> <td>操作类型</td> <td>add, edit, delete</td> </tr> <tr> <td>user_info</td> <td>是</td> <td>{}</td> <td>编辑信息</td> <td>-</td> </tr> <tr> <td>id</td> <td>是</td> <td>int</td> <td>id</td> <td>-</td> </tr> <tr> <td>user_name</td> <td>是</td> <td>str</td> <td>用户名</td> <td>最少三位字符</td> </tr> <tr> <td>email</td> <td>是</td> <td>str</td> <td>email</td> <td>email</td> </tr> <tr> <td>role</td> <td>是</td> <td>str</td> <td>角色(权限类型)</td> <td>Admin,Staff</td> </tr> <tr> <td>password</td> <td>是</td> <td>str</td> <td>密码</td> <td>最少六位字符</td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code":0, "err_info":"" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>0成功,非0错误</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>描述信息</td> <td>“ ”,权限不足,用户已存在,格式不正确等</td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <h4>3,修改邮箱</h4> <p>http POST <a href="http://0.0.0.0:8001/api/user/edit_email">http://0.0.0.0:8001/api/user/edit_email</a></p> <p>request</p> <pre><code>{ "id": 1, "auth_code":"0000", "new_email":"" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>id</td> <td>是</td> <td>int</td> <td>id</td> <td>-</td> </tr> <tr> <td>auth_code</td> <td>是</td> <td>str</td> <td>验证码</td> <td>-</td> </tr> <tr> <td>new_email</td> <td>是</td> <td>str</td> <td>新邮箱</td> <td>-</td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code":0, "err_info":"" }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>err_code</td> <td>int</td> <td>错误码</td> <td>0成功,非0错误</td> </tr> <tr> <td>err_info</td> <td>str</td> <td>描述信息</td> <td>“ ”,权限不足,用户已存在,格式不正确等</td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <h4>4,用户查询</h4> <p>http POST <a href="http://0.0.0.0:8001/api/user/search">http://0.0.0.0:8001/api/user/search</a></p> <p>request</p> <pre><code>{ "filed":"", "keyword": "", "page_num":1, "page_size":10 }</code></pre> <table> <thead> <tr> <th>字段</th> <th>是否必填</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>filed</td> <td>是</td> <td>str</td> <td>搜索字段类型</td> <td>ID/User Name/E-mail/Role</td> </tr> <tr> <td>keyword</td> <td>是</td> <td>str</td> <td>搜索关键字</td> <td>-</td> </tr> <tr> <td>page_num</td> <td>是</td> <td>int</td> <td>分页查询第几页</td> <td>&gt;0</td> </tr> <tr> <td>page_size</td> <td>是</td> <td>int</td> <td>分页查询页显示量</td> <td>&gt;0</td> </tr> </tbody> </table> <p>response</p> <pre><code>{ "err_code":0, "err_info":"", "result": [ {"ID":"20200101", "Username": "sss", "Role":"Admin", "E-mail":"", "Last Login": "", "Created On":""}, {"ID":"20200101", "Username": "sss", "Role":"Admin", "E-mail":"", "Last Login": "", "Created On":""}, {"ID":"20200101", "Username": "sss", "Role":"Admin", "E-mail":"", "Last Login": "", "Created On":""} ] "total_page": 123, }</code></pre> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>描述</th> <th>取值</th> </tr> </thead> <tbody> <tr> <td>ID</td> <td>int</td> <td>唯一id</td> <td></td> </tr> <tr> <td>Username</td> <td>str</td> <td>用户名</td> <td></td> </tr> <tr> <td>Role</td> <td>str</td> <td>角色</td> <td></td> </tr> <tr> <td>E-mail</td> <td>str</td> <td>email</td> <td></td> </tr> <tr> <td>Last Login</td> <td>str</td> <td>上次登入</td> <td></td> </tr> <tr> <td>Created On</td> <td>str</td> <td>创建时间</td> <td></td> </tr> </tbody> </table>

页面列表

ITEM_HTML