From 579ee8d2751191e2ed0d269c005c8276ff03fe2e Mon Sep 17 00:00:00 2001 From: Semih Yesilyurt Date: Fri, 12 Jun 2026 11:16:01 +0300 Subject: [PATCH] =?UTF-8?q?tweak(gamification):=20uzman=20program=C4=B1=20?= =?UTF-8?q?kriteri=202/2=20=E2=86=92=205/5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit En az 5 FARKLI başarılı VIN decode VE en az 5 FARKLI OEM kodu kopyası. Co-Authored-By: Claude Fable 5 --- apps/api/src/oem-votes/expert-access.service.ts | 9 +++++---- apps/api/src/oem-votes/oem-votes.logic.spec.ts | 10 +++++----- apps/api/src/oem-votes/oem-votes.logic.ts | 6 +++--- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/apps/api/src/oem-votes/expert-access.service.ts b/apps/api/src/oem-votes/expert-access.service.ts index ff51890..d77b8cb 100644 --- a/apps/api/src/oem-votes/expert-access.service.ts +++ b/apps/api/src/oem-votes/expert-access.service.ts @@ -16,10 +16,11 @@ export class ExpertAccessService { private readonly posthog: PostHogService, ) {} - // Erişim = flag AÇIK VE kullanım kriteri: en az 2 FARKLI başarılı VIN - // decode + en az 2 FARKLI OEM kodu kopyası (kayıtlı, kataloğu gerçekten - // kullanan üyeler). Flag local-eval edilemezse fail-open — kitleyi kriter - // zaten daraltır, PostHog kesintisi programı söndürmesin. + // Erişim = flag AÇIK VE kullanım kriteri: en az 5 FARKLI başarılı VIN + // decode + en az 5 FARKLI OEM kodu kopyası (kayıtlı, kataloğu gerçekten + // kullanan üyeler — eşikler oem-votes.logic.ts'te). Flag local-eval + // edilemezse fail-open — kitleyi kriter zaten daraltır, PostHog kesintisi + // programı söndürmesin. async check(userId: string): Promise<{ enabled: boolean }> { const flagOn = await this.posthog.isEnabled(EXPERT_PROGRAM_FLAG, userId, true); if (!flagOn) return { enabled: false }; diff --git a/apps/api/src/oem-votes/oem-votes.logic.spec.ts b/apps/api/src/oem-votes/oem-votes.logic.spec.ts index c1e3b36..43c79ed 100644 --- a/apps/api/src/oem-votes/oem-votes.logic.spec.ts +++ b/apps/api/src/oem-votes/oem-votes.logic.spec.ts @@ -69,11 +69,11 @@ describe("maskExpertName", () => { }); describe("meetsExpertCriteria", () => { - it("en az 2 farklı VIN VE en az 2 farklı OEM kopyası ister", () => { - expect(meetsExpertCriteria(2, 2)).toBe(true); - expect(meetsExpertCriteria(5, 3)).toBe(true); - expect(meetsExpertCriteria(1, 2)).toBe(false); - expect(meetsExpertCriteria(2, 1)).toBe(false); + it("en az 5 farklı VIN VE en az 5 farklı OEM kopyası ister", () => { + expect(meetsExpertCriteria(5, 5)).toBe(true); + expect(meetsExpertCriteria(12, 7)).toBe(true); + expect(meetsExpertCriteria(4, 5)).toBe(false); + expect(meetsExpertCriteria(5, 4)).toBe(false); expect(meetsExpertCriteria(0, 0)).toBe(false); }); }); diff --git a/apps/api/src/oem-votes/oem-votes.logic.ts b/apps/api/src/oem-votes/oem-votes.logic.ts index 142f41a..1afb1f6 100644 --- a/apps/api/src/oem-votes/oem-votes.logic.ts +++ b/apps/api/src/oem-votes/oem-votes.logic.ts @@ -26,9 +26,9 @@ export function computeVoteAward(prior: VoteCounts, vote: OemVoteChoice): VoteAw } // Program kitle kriteri: kataloğu gerçekten kullanan kayıtlı üyeler — -// en az 2 FARKLI başarılı VIN decode VE en az 2 FARKLI OEM kodu kopyası. -export const MIN_DISTINCT_VINS = 2; -export const MIN_DISTINCT_OEM_COPIES = 2; +// en az 5 FARKLI başarılı VIN decode VE en az 5 FARKLI OEM kodu kopyası. +export const MIN_DISTINCT_VINS = 5; +export const MIN_DISTINCT_OEM_COPIES = 5; export function meetsExpertCriteria(distinctVins: number, distinctOemCopies: number): boolean { return distinctVins >= MIN_DISTINCT_VINS && distinctOemCopies >= MIN_DISTINCT_OEM_COPIES;