add quality issue

This commit is contained in:
Julien Calixte
2023-07-22 17:34:26 +02:00
parent 1579e2598e
commit 05e89f6b03
7 changed files with 115 additions and 39 deletions

View File

@@ -3,6 +3,46 @@ import { FeatureStep } from '@/modules/feature/feature-steps'
import { features } from '@/modules/feature/feature.fixture'
import { pickRandomElement, popNElement, shuffleArray } from '@/utils'
const hasQualityIssue = (
complexity: number,
tasksInParallel: number
): boolean => {
let probabilityOfQualityIssue = 0
switch (complexity) {
case 1:
probabilityOfQualityIssue = 0.8
break
case 2:
probabilityOfQualityIssue = 0.7
break
case 3:
probabilityOfQualityIssue = 0.6
break
default:
probabilityOfQualityIssue = 0.5
break
}
let multiplicator = 1
switch (tasksInParallel) {
case 1:
multiplicator = 1
case 2:
multiplicator = 1.05
case 3:
multiplicator = 1.08
case 4:
multiplicator = 1.1
case 5:
multiplicator = 1.15
}
return Math.random() > probabilityOfQualityIssue / multiplicator
}
export const createFeatureBoard = () => {
const boardFeatures = shuffleArray(features)
@@ -24,6 +64,7 @@ export const createFeatureBoard = () => {
if (isFeatureLive) {
return
}
feature.leadTime++
switch (feature.status) {
@@ -32,7 +73,20 @@ export const createFeatureBoard = () => {
break
case 'done':
feature.status = 'doing'
feature.step--
if (
hasQualityIssue(
feature.complexity,
features.filter(
(f) => f.status === 'doing' && f.step === feature.step
).length
)
) {
feature.step = Math.min(4, feature.step + 1)
feature.qualityIssue++
} else {
feature.step--
}
break
}
})