tweak(gamification): uzman programı kriteri 2/2 → 5/5
En az 5 FARKLI başarılı VIN decode VE en az 5 FARKLI OEM kodu kopyası. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,10 +16,11 @@ export class ExpertAccessService {
|
|||||||
private readonly posthog: PostHogService,
|
private readonly posthog: PostHogService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
// Erişim = flag AÇIK VE kullanım kriteri: en az 2 FARKLI başarılı VIN
|
// Erişim = flag AÇIK VE kullanım kriteri: en az 5 FARKLI başarılı VIN
|
||||||
// decode + en az 2 FARKLI OEM kodu kopyası (kayıtlı, kataloğu gerçekten
|
// decode + en az 5 FARKLI OEM kodu kopyası (kayıtlı, kataloğu gerçekten
|
||||||
// kullanan üyeler). Flag local-eval edilemezse fail-open — kitleyi kriter
|
// kullanan üyeler — eşikler oem-votes.logic.ts'te). Flag local-eval
|
||||||
// zaten daraltır, PostHog kesintisi programı söndürmesin.
|
// edilemezse fail-open — kitleyi kriter zaten daraltır, PostHog kesintisi
|
||||||
|
// programı söndürmesin.
|
||||||
async check(userId: string): Promise<{ enabled: boolean }> {
|
async check(userId: string): Promise<{ enabled: boolean }> {
|
||||||
const flagOn = await this.posthog.isEnabled(EXPERT_PROGRAM_FLAG, userId, true);
|
const flagOn = await this.posthog.isEnabled(EXPERT_PROGRAM_FLAG, userId, true);
|
||||||
if (!flagOn) return { enabled: false };
|
if (!flagOn) return { enabled: false };
|
||||||
|
|||||||
@@ -69,11 +69,11 @@ describe("maskExpertName", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("meetsExpertCriteria", () => {
|
describe("meetsExpertCriteria", () => {
|
||||||
it("en az 2 farklı VIN VE en az 2 farklı OEM kopyası ister", () => {
|
it("en az 5 farklı VIN VE en az 5 farklı OEM kopyası ister", () => {
|
||||||
expect(meetsExpertCriteria(2, 2)).toBe(true);
|
expect(meetsExpertCriteria(5, 5)).toBe(true);
|
||||||
expect(meetsExpertCriteria(5, 3)).toBe(true);
|
expect(meetsExpertCriteria(12, 7)).toBe(true);
|
||||||
expect(meetsExpertCriteria(1, 2)).toBe(false);
|
expect(meetsExpertCriteria(4, 5)).toBe(false);
|
||||||
expect(meetsExpertCriteria(2, 1)).toBe(false);
|
expect(meetsExpertCriteria(5, 4)).toBe(false);
|
||||||
expect(meetsExpertCriteria(0, 0)).toBe(false);
|
expect(meetsExpertCriteria(0, 0)).toBe(false);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ export function computeVoteAward(prior: VoteCounts, vote: OemVoteChoice): VoteAw
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Program kitle kriteri: kataloğu gerçekten kullanan kayıtlı üyeler —
|
// 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ı.
|
// en az 5 FARKLI başarılı VIN decode VE en az 5 FARKLI OEM kodu kopyası.
|
||||||
export const MIN_DISTINCT_VINS = 2;
|
export const MIN_DISTINCT_VINS = 5;
|
||||||
export const MIN_DISTINCT_OEM_COPIES = 2;
|
export const MIN_DISTINCT_OEM_COPIES = 5;
|
||||||
|
|
||||||
export function meetsExpertCriteria(distinctVins: number, distinctOemCopies: number): boolean {
|
export function meetsExpertCriteria(distinctVins: number, distinctOemCopies: number): boolean {
|
||||||
return distinctVins >= MIN_DISTINCT_VINS && distinctOemCopies >= MIN_DISTINCT_OEM_COPIES;
|
return distinctVins >= MIN_DISTINCT_VINS && distinctOemCopies >= MIN_DISTINCT_OEM_COPIES;
|
||||||
|
|||||||
Reference in New Issue
Block a user