diff --git a/back/data/env.ts b/back/data/env.ts index 82503f4d..3a1d3470 100644 --- a/back/data/env.ts +++ b/back/data/env.ts @@ -28,7 +28,7 @@ export enum EnvStatus { export const maxPosition = 9000000000000000; export const initPosition = 4500000000000000; -export const stepPosition = 10000000; +export const stepPosition = 10000000000; export const minPosition = 100; interface EnvInstance extends Model, Env {} diff --git a/back/services/env.ts b/back/services/env.ts index c85bbdcd..95e5198a 100644 --- a/back/services/env.ts +++ b/back/services/env.ts @@ -16,7 +16,7 @@ import { Op } from 'sequelize'; @Service() export default class EnvService { - constructor(@Inject('logger') private logger: winston.Logger) {} + constructor(@Inject('logger') private logger: winston.Logger) { } public async create(payloads: Env[]): Promise { const envs = await this.envs(); @@ -92,13 +92,13 @@ export default class EnvService { position: this.getPrecisionPosition(targetPosition), }); - await this.checkPosition(targetPosition); + await this.checkPosition(targetPosition, envs[toIndex].position!); return newDoc; } - private async checkPosition(position: number) { + private async checkPosition(position: number, edge: number = 0) { const precisionPosition = parseFloat(position.toPrecision(16)); - if (precisionPosition < minPosition || precisionPosition > maxPosition) { + if (precisionPosition < minPosition || precisionPosition > maxPosition || Math.abs(precisionPosition - edge) < minPosition) { const envs = await this.envs(); let position = initPosition; for (const env of envs) {