Добавлены данные по переработкам
parent
745c2aee47
commit
8c246f86eb
|
|
@ -105,6 +105,7 @@ watch(
|
||||||
<th colspan="5" class="sprint-table__th-group">Lead Time</th>
|
<th colspan="5" class="sprint-table__th-group">Lead Time</th>
|
||||||
<th colspan="5" class="sprint-table__th-group">Количество заходов на тестирование</th>
|
<th colspan="5" class="sprint-table__th-group">Количество заходов на тестирование</th>
|
||||||
<th colspan="3" class="sprint-table__th-group">Flow Efficiency</th>
|
<th colspan="3" class="sprint-table__th-group">Flow Efficiency</th>
|
||||||
|
<th colspan="5" class="sprint-table__th-group">Переработка</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="sprint-table__th-metric">max</th>
|
<th class="sprint-table__th-metric">max</th>
|
||||||
|
|
@ -120,6 +121,11 @@ watch(
|
||||||
<th class="sprint-table__th-metric">min</th>
|
<th class="sprint-table__th-metric">min</th>
|
||||||
<th class="sprint-table__th-metric">max</th>
|
<th class="sprint-table__th-metric">max</th>
|
||||||
<th class="sprint-table__th-metric">50pp</th>
|
<th class="sprint-table__th-metric">50pp</th>
|
||||||
|
<th class="sprint-table__th-metric">max</th>
|
||||||
|
<th class="sprint-table__th-metric">min</th>
|
||||||
|
<th class="sprint-table__th-metric">95pp</th>
|
||||||
|
<th class="sprint-table__th-metric">80pp</th>
|
||||||
|
<th class="sprint-table__th-metric">50pp</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
@ -155,6 +161,11 @@ watch(
|
||||||
<td class="sprint-table__metric">{{ formatEfficiency(sprint.efficiency_min) }}</td>
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.efficiency_min) }}</td>
|
||||||
<td class="sprint-table__metric">{{ formatEfficiency(sprint.efficiency_max) }}</td>
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.efficiency_max) }}</td>
|
||||||
<td class="sprint-table__metric">{{ formatEfficiency(sprint.efficiency_p50) }}</td>
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.efficiency_p50) }}</td>
|
||||||
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.recast_max) }}</td>
|
||||||
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.recast_min) }}</td>
|
||||||
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.recast_p95) }}</td>
|
||||||
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.recast_p80) }}</td>
|
||||||
|
<td class="sprint-table__metric">{{ formatEfficiency(sprint.recast_p50) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -23,4 +23,9 @@ export interface Sprint {
|
||||||
efficiency_min: number | null
|
efficiency_min: number | null
|
||||||
efficiency_max: number | null
|
efficiency_max: number | null
|
||||||
efficiency_p50: number | null
|
efficiency_p50: number | null
|
||||||
|
recast_max: number | null
|
||||||
|
recast_min: number | null
|
||||||
|
recast_p95: number | null
|
||||||
|
recast_p80: number | null
|
||||||
|
recast_p50: number | null
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,12 @@ final class ReportsApi {
|
||||||
* test_count_p50: float|null,
|
* test_count_p50: float|null,
|
||||||
* efficiency_min: float|null,
|
* efficiency_min: float|null,
|
||||||
* efficiency_max: float|null,
|
* efficiency_max: float|null,
|
||||||
* efficiency_p50: float|null
|
* efficiency_p50: float|null,
|
||||||
|
* recast_max: float|null,
|
||||||
|
* recast_min: float|null,
|
||||||
|
* recast_p95: float|null,
|
||||||
|
* recast_p80: float|null,
|
||||||
|
* recast_p50: float|null
|
||||||
* }>
|
* }>
|
||||||
*/
|
*/
|
||||||
public function getSprintsByTeamId(int $teamId): array {
|
public function getSprintsByTeamId(int $teamId): array {
|
||||||
|
|
@ -79,7 +84,15 @@ final class ReportsApi {
|
||||||
MIN(t.efficiency_percentage) FILTER (WHERE t.efficiency_percentage IS NOT NULL) AS efficiency_min,
|
MIN(t.efficiency_percentage) FILTER (WHERE t.efficiency_percentage IS NOT NULL) AS efficiency_min,
|
||||||
MAX(t.efficiency_percentage) FILTER (WHERE t.efficiency_percentage IS NOT NULL) AS efficiency_max,
|
MAX(t.efficiency_percentage) FILTER (WHERE t.efficiency_percentage IS NOT NULL) AS efficiency_max,
|
||||||
percentile_cont(0.50) WITHIN GROUP (ORDER BY t.efficiency_percentage)
|
percentile_cont(0.50) WITHIN GROUP (ORDER BY t.efficiency_percentage)
|
||||||
FILTER (WHERE t.efficiency_percentage IS NOT NULL) AS efficiency_p50
|
FILTER (WHERE t.efficiency_percentage IS NOT NULL) AS efficiency_p50,
|
||||||
|
MAX(t.recast_percentage) FILTER (WHERE t.recast_percentage IS NOT NULL) AS recast_max,
|
||||||
|
MIN(t.recast_percentage) FILTER (WHERE t.recast_percentage IS NOT NULL) AS recast_min,
|
||||||
|
percentile_cont(0.95) WITHIN GROUP (ORDER BY t.recast_percentage)
|
||||||
|
FILTER (WHERE t.recast_percentage IS NOT NULL) AS recast_p95,
|
||||||
|
percentile_cont(0.80) WITHIN GROUP (ORDER BY t.recast_percentage)
|
||||||
|
FILTER (WHERE t.recast_percentage IS NOT NULL) AS recast_p80,
|
||||||
|
percentile_cont(0.50) WITHIN GROUP (ORDER BY t.recast_percentage)
|
||||||
|
FILTER (WHERE t.recast_percentage IS NOT NULL) AS recast_p50
|
||||||
FROM sprints s
|
FROM sprints s
|
||||||
LEFT JOIN tasks t ON t.sprint_id = s.id
|
LEFT JOIN tasks t ON t.sprint_id = s.id
|
||||||
LEFT JOIN employees e ON e.id = t.employee_id
|
LEFT JOIN employees e ON e.id = t.employee_id
|
||||||
|
|
@ -117,6 +130,11 @@ final class ReportsApi {
|
||||||
'efficiency_min' => $row['efficiency_min'] !== null ? (float) $row['efficiency_min'] : null,
|
'efficiency_min' => $row['efficiency_min'] !== null ? (float) $row['efficiency_min'] : null,
|
||||||
'efficiency_max' => $row['efficiency_max'] !== null ? (float) $row['efficiency_max'] : null,
|
'efficiency_max' => $row['efficiency_max'] !== null ? (float) $row['efficiency_max'] : null,
|
||||||
'efficiency_p50' => $row['efficiency_p50'] !== null ? (float) $row['efficiency_p50'] : null,
|
'efficiency_p50' => $row['efficiency_p50'] !== null ? (float) $row['efficiency_p50'] : null,
|
||||||
|
'recast_max' => $row['recast_max'] !== null ? (float) $row['recast_max'] : null,
|
||||||
|
'recast_min' => $row['recast_min'] !== null ? (float) $row['recast_min'] : null,
|
||||||
|
'recast_p95' => $row['recast_p95'] !== null ? (float) $row['recast_p95'] : null,
|
||||||
|
'recast_p80' => $row['recast_p80'] !== null ? (float) $row['recast_p80'] : null,
|
||||||
|
'recast_p50' => $row['recast_p50'] !== null ? (float) $row['recast_p50'] : null,
|
||||||
],
|
],
|
||||||
$rows
|
$rows
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue