////
Search

BoostUpSchemePolicy [Updated 12.15]

태그
정책
설명
부스트 강화 스킴 정책 (성공, 실패, 잭팟에 대한 정책)
Related to 강화 API (Response)
강화 API (Request)에 관계됨
BoostUpSchemePolicy
소스
export enum BoostUpResultType { WIN = 'win', // 성공 MISS = 'miss', // 실패 JACKPOT = 'jackpot', // 잭팟! }
TypeScript
복사
import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn, } from 'typeorm'; import BoostUpPolicyEntity from './BoostUpPolicyEntity'; import { BoostUpResultType } from '@chai/chai-commons'; @Entity('boost_up_scheme_policy') export default class BoostUpSchemePolicyEntity { @PrimaryGeneratedColumn() id: number; @Column({ type: 'varchar', enum: BoostUpResultType }) result: BoostUpResultType; @Column({ comment: '강화 성공 레벨', default: 1 }) level: number; @Column({ comment: '확률', type: 'double precision' }) probability: number; @Column({ comment: '추가 캐시백 금액 (최소)' }) cashbackAmountMin: number; @Column({ comment: '추가 캐시백 금액 (최대)' }) cashbackAmountMax: number; @Column({ comment: '추가 캐시백 금액 단위', default: 0 }) cashbackAmountUnit: number; @Column({ comment: '추가 할인률' }) discountRate: number; @Column() @RelationId((entity: BoostUpSchemePolicyEntity) => entity.boostUpPolicy) boostUpPolicyId: number; @ManyToOne(() => BoostUpPolicyEntity, boostUpPolicy => boostUpPolicy.boostUpSchemePolicies, { createForeignKeyConstraints: false, }) @JoinColumn({ name: 'boost_up_policy_id' }) boostUpPolicy: BoostUpPolicyEntity; @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date; }
TypeScript
복사
엔티티 정의
부스트 강화 스킴 정책
강화 정책과의 차이
부스트 강화 정책: 강화 결과를 제외한 모든 강화에 대한 정보를 담고 있음
부스트 강화 스킴 정책: 강화 결과에 대한 정보를 담고 있음
강화 세상에서는 편의를 위해 부스트 강화 정책 → policy, 부스트 강화 스킴 정책 → scheme으로 부른다.
필드
result: 강화 결과
win(성공), miss(실패), jackpot(잭팟) 3가지 결과가 존재한다.
level: 강화 성공 레벨
성공의 정도를 구분하기 위해 존재하는 필드
실패, 잭팟에서는 기본값 1로 설정해둔다. (실패, 잭팟에서는 의미가 없는값임)
강화 성공 레벨에 따라 차이크루에게 보여지는 애니메이션이 달라질 듯..?
probability: 확률
강화 결과가 발생할 확률
cashbackAmountMin, cashbackAmountMax: 추가 캐시백 금액 (최소, 최대)
유저가 강화에 성공했을 때 캐시백 금액을 랜덤하게 주자!라는 요구사항이 있어서 지급할 수 있는 캐시백 금액의 범위를 나타내기 위해 존재하는 필드들이다.
cashbackAmountUnit: 추가 캐시백 금액 단위
유저에게 캐시백 금액을 1원 단위로 주기 싫어서 만든 필드다.
cashbackAmountMin = 10, cashbackAmountMax = 40인 경우, 10 ~ 40 사이의 값을 유저가 받게 되는데, 이때 최소 10원 단위 금액을 주고 싶으면 cashbackAmountUnit = 10으로 설정하면 된다.
정리하면, cashbackAmountMin ~ cashbackAmountMax 사이의 값 중 cashbackAmountUnit의 배수 값들만 뽑아서 얘네들끼리 랜덤 돌리고 유저에게 지급한다.
discountRate: 추가 할인율
유저가 강화에 성공했을 때 캐시백 금액은 랜덤하게 주지만, 할인율은 고정값이 올라간다(정률 할인 강화에서).
boostUpPolicyId, boostUpPolicy: 스킴에 묶인 강화 정책
createdAt: 해당 스킴이 생성된 Date
updatedAt: 해당 스킴이 업뎃된 Date
정률 할인과 정액 할인의 Scheme 값 차이