simulate without store

This commit is contained in:
Julien Calixte
2023-07-24 22:53:53 +02:00
parent 05786ba854
commit d5550cc53d
2 changed files with 23 additions and 9 deletions

View File

@@ -33,7 +33,7 @@ const hasQualityIssue = ({
return quality > qualityProbability / multiplicator return quality > qualityProbability / multiplicator
} }
export const newBoard = () => shuffleArray(initialFeatures) export const newBacklog = () => shuffleArray(initialFeatures)
export const initBoard = ( export const initBoard = (
steps: FeatureStep[], steps: FeatureStep[],
@@ -212,7 +212,10 @@ const getQualityProbability = (
return probabilityOfGoodQuality return probabilityOfGoodQuality
} }
export const nextDay = (state: State, strategy: Strategy): State => { export const nextDay = (
state: Omit<State, 'dashboards'>,
strategy: Strategy
): Omit<State, 'dashboards'> => {
state.meta.totalDays++ state.meta.totalDays++
state.meta.strategy[strategy]++ state.meta.strategy[strategy]++
@@ -268,7 +271,10 @@ export const meanQualityIssue = (features: Feature[]) => {
) )
} }
export const simulate = (state: State, strategy: Strategy): State => { export const simulate = (
state: Omit<State, 'dashboards'>,
strategy: Strategy
): Omit<State, 'dashboards'> => {
let i = 0 let i = 0
while (!isProjectFinished(state.features) && i++ < HARD_STOP) { while (!isProjectFinished(state.features) && i++ < HARD_STOP) {

View File

@@ -35,9 +35,8 @@ export const useFeatureStore = defineStore('feature', {
}), }),
actions: { actions: {
async initBoard() { async initBoard() {
const newBoard = await instance.newBoard() const newBacklog = await instance.newBacklog()
this.backlog = newBacklog
this.backlog = newBoard
this.steps = featureSteps this.steps = featureSteps
this.features = await instance.initBoard( this.features = await instance.initBoard(
clone(this.steps), clone(this.steps),
@@ -57,9 +56,19 @@ export const useFeatureStore = defineStore('feature', {
this.features = newState.features this.features = newState.features
}, },
async simulate(strategy: Strategy) { async simulate(strategy: Strategy) {
await this.initBoard() const backlog = await instance.newBacklog()
const steps = featureSteps
const features = await instance.initBoard(steps, backlog)
const newState = await instance.simulate(clone(this.$state), strategy) const newState = await instance.simulate(
{
backlog,
steps,
features,
meta: resetMeta()
},
strategy
)
const [worstFeature] = newState.features.sort((a, b) => const [worstFeature] = newState.features.sort((a, b) =>
a.qualityIssue > b.qualityIssue ? -1 : 1 a.qualityIssue > b.qualityIssue ? -1 : 1
@@ -78,7 +87,6 @@ export const useFeatureStore = defineStore('feature', {
)[0][0] )[0][0]
} }
}) })
await this.initBoard()
}, },
clearDashboard() { clearDashboard() {
this.dashboards = [] this.dashboards = []