add takt time and simplify simulation getters

This commit is contained in:
Julien Calixte
2023-07-26 21:49:09 +02:00
parent 4af91102b8
commit 8d0d3dc7f9
6 changed files with 99 additions and 145 deletions

View File

@@ -1,7 +1,10 @@
<script setup lang="ts">
import { Strategy } from '@/modules/lean/strategy'
import { useSimulationStore } from '@/modules/simulation/simulation-store'
const simulationStore = useSimulationStore()
const strategies: Strategy[] = ['push', 'pull', 'push-dps', 'pull-dps']
</script>
<template>
@@ -16,56 +19,35 @@ const simulationStore = useSimulationStore()
<thead>
<tr>
<th>#</th>
<th>push</th>
<th>pull</th>
<th>pull and DPS</th>
<th>push and DPS</th>
<th class="numeric">push</th>
<th class="numeric">pull</th>
<th class="numeric">pull and DPS</th>
<th class="numeric">push and DPS</th>
</tr>
</thead>
<tbody>
<tr>
<td>lead time</td>
<td class="numeric">
{{ simulationStore.meanPushLeadTime }}
<td class="numeric" v-for="strategy in strategies" :key="strategy">
{{ simulationStore.meanLeadTime(strategy) }}
</td>
<td class="numeric">
{{ simulationStore.meanPullLeadTime }}
</td>
<td class="numeric">
{{ simulationStore.meanPullDPSLeadTime }}
</td>
<td class="numeric">
{{ simulationStore.meanPushDPSLeadTime }}
</tr>
<tr>
<td>takt time</td>
<td class="numeric" v-for="strategy in strategies" :key="strategy">
{{ simulationStore.meanTaktTime(strategy) }}
</td>
</tr>
<tr>
<td>Complexity</td>
<td class="numeric">
{{ simulationStore.meanPushComplexity }}
</td>
<td class="numeric">
{{ simulationStore.meanPullComplexity }}
</td>
<td class="numeric">
{{ simulationStore.meanPullDPSComplexity }}
</td>
<td class="numeric">
{{ simulationStore.meanPushDPSComplexity }}
<td class="numeric" v-for="strategy in strategies" :key="strategy">
{{ simulationStore.meanComplexity(strategy) }}
</td>
</tr>
<tr>
<td>Quality issue</td>
<td class="numeric">
{{ simulationStore.meanPushQuality }}
</td>
<td class="numeric">
{{ simulationStore.meanPullQuality }}
</td>
<td class="numeric">
{{ simulationStore.meanPullDPSQuality }}
</td>
<td class="numeric">
{{ simulationStore.meanPushDPSQuality }}
<td class="numeric" v-for="strategy in strategies" :key="strategy">
{{ simulationStore.meanQuality(strategy) }}
</td>
</tr>
</tbody>
@@ -76,9 +58,13 @@ const simulationStore = useSimulationStore()
<style scoped lang="scss">
.simulation-dashboard {
color: var(--primary-color);
table {
padding: 1rem;
}
}
td.numeric {
.numeric {
text-align: right;
}
</style>

View File

@@ -1,13 +1,14 @@
import { featureSteps } from '@/modules/feature/feature-steps'
import { Strategy } from '@/modules/lean/strategy'
import { Dashboard, Meta } from '@/store-type'
import { getRound } from '@/utils'
import { getRound, sumElements } from '@/utils'
import { defineStore } from 'pinia'
// Get features done per day to plot it
type Mean = {
leadTimeSum: number
taktTimeSum: number
complexitySum: number
qualityIssueSum: number
simulations: number
@@ -22,6 +23,7 @@ type State = {
const newMean = (): Mean => ({
leadTimeSum: 0,
taktTimeSum: 0,
complexitySum: 0,
qualityIssueSum: 0,
simulations: 0
@@ -33,7 +35,8 @@ const instance = new ComlinkWorker<typeof import('../feature/feature-board')>(
const resetMeta = (): Meta => ({
totalDays: 0,
daysWithProblemSolving: 0,
teamWorkExperience: 0,
featuresDonePerDay: [],
strategy: {
push: 0,
pull: 0,
@@ -95,6 +98,10 @@ export const useSimulationStore = defineStore('dashboard', {
this.newDashboard(dashboard)
this.mean[strategy].leadTimeSum += dashboard.analysis.meanLeadTime
// todo: set directly the number of features
this.mean[strategy].taktTimeSum +=
dashboard.meta.totalDays /
sumElements(dashboard.meta.featuresDonePerDay)
this.mean[strategy].complexitySum += dashboard.analysis.meanComplexity
this.mean[strategy].qualityIssueSum += dashboard.analysis.meanQualityIssue
this.mean[strategy].simulations++
@@ -115,71 +122,25 @@ export const useSimulationStore = defineStore('dashboard', {
}
},
getters: {
meanPushLeadTime: (state) => {
return getRound(state.mean.push.leadTimeSum, state.mean.push.simulations)
},
meanPullLeadTime: (state) => {
return getRound(state.mean.pull.leadTimeSum, state.mean.pull.simulations)
},
meanPullDPSLeadTime: (state) => {
return getRound(
state.mean['pull-dps'].leadTimeSum,
state.mean['pull-dps'].simulations
meanLeadTime: (state) => (strategy: Strategy) =>
getRound(
state.mean[strategy].leadTimeSum,
state.mean[strategy].simulations
),
meanTaktTime: (state) => (strategy: Strategy) =>
getRound(
state.mean[strategy].taktTimeSum,
state.mean[strategy].simulations
),
meanComplexity: (state) => (strategy: Strategy) =>
getRound(
state.mean[strategy].complexitySum,
state.mean[strategy].simulations
),
meanQuality: (state) => (strategy: Strategy) =>
getRound(
state.mean[strategy].qualityIssueSum,
state.mean[strategy].simulations
)
},
meanPushDPSLeadTime: (state) => {
return getRound(
state.mean['push-dps'].leadTimeSum,
state.mean['push-dps'].simulations
)
},
meanPushComplexity: (state) => {
return getRound(
state.mean.push.complexitySum,
state.mean.push.simulations
)
},
meanPullComplexity: (state) => {
return getRound(
state.mean.pull.complexitySum,
state.mean.pull.simulations
)
},
meanPullDPSComplexity: (state) => {
return getRound(
state.mean['pull-dps'].complexitySum,
state.mean['pull-dps'].simulations
)
},
meanPushDPSComplexity: (state) => {
return getRound(
state.mean['push-dps'].complexitySum,
state.mean['push-dps'].simulations
)
},
meanPushQuality: (state) => {
return getRound(
state.mean.push.qualityIssueSum,
state.mean.push.simulations
)
},
meanPullQuality: (state) => {
return getRound(
state.mean.pull.qualityIssueSum,
state.mean.pull.simulations
)
},
meanPullDPSQuality: (state) => {
return getRound(
state.mean['pull-dps'].qualityIssueSum,
state.mean['pull-dps'].simulations
)
},
meanPushDPSQuality: (state) => {
return getRound(
state.mean['push-dps'].qualityIssueSum,
state.mean['push-dps'].simulations
)
}
}
})