数仓外部接口1210
<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>
</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>>=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>>0</td>
</tr>
<tr>
<td>times</td>
<td>int</td>
<td>经过次数</td>
<td>>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>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": "Running Hour",
"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>>1</td>
</tr>
<tr>
<td>page_size</td>
<td>是</td>
<td>int</td>
<td>分页查询页显示量</td>
<td>>1</td>
</tr>
</tbody>
</table>
<p>response</p>
<pre><code>{
"KPI_detial": "Running Hour",
"result":[
{"AT":"AT01","value":32},{"AT":"AT02","value":22}
],
"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</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>
<h3>四,登录注册</h3>
<h3>五,权限管理</h3>