add quality issue
This commit is contained in:
@@ -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
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user