INTEGRITY Dokumentace

Důvody vyhodnocení a chybové kódy

Když vyhodnocujete flag pomocí metody vazby *Details metody nebo SDK OpenFeature, odpověď obsahuje reason pole, které vysvětluje, proč byla vrácena daná hodnota. Pokud dojde k chybě, odpověď obsahuje errorCode .

Důvody vyhodnocení

Důvod Popis
TARGETING_MATCH Podmínky cílicího pravidla odpovídaly kontextu vyhodnocení a byla vrácena varianta daného pravidla.
SPLIT Shodovalo se cílicí pravidlo s procentuálním rolloutem. Uživatel spadal do procenta rolloutu a obdržel variantu daného pravidla.
DEFAULT Žádné cílicí pravidlo neodpovídalo kontextu vyhodnocení. Byla vrácena výchozí varianta příznaku.
DISABLED Příznak je vypnutý. Bez ohledu na pravidla cílení byla vrácena výchozí varianta.
CACHED SDK vrátilo výsledek vyhodnocení z mezipaměti.
ERROR Vyhodnocení se nezdařilo a byla vrácena výchozí hodnota.

Kódy chyb

Pokud dojde k chybě při vyhodnocení, metoda vrátí vámi zadanou výchozí hodnotu. Pole *Details metody obsahují další metadata o chybě.

Kód chyby Popis
TYPE_MISMATCH Typ varianty příznaku neodpovídá požadovanému typu. Například při volání getBooleanValue na flagu, jehož varianta je řetězec. Vrátí se výchozí hodnota.
FLAG_NOT_FOUND Zadaný klíč flagu v aplikaci neexistuje. Vrátí se výchozí hodnota.
INVALID_CONTEXT Kontext vyhodnocení obsahuje nepodporované hodnoty, například objekty nebo pole při HTTP vyhodnocení. Vrací se výchozí hodnota.
PARSE_ERROR SDK obdrželo neplatnou odpověď vyhodnocení. Vrací se výchozí hodnota.
GENERAL Během vyhodnocení došlo k neočekávané chybě, například k vypršení časového limitu nebo výpadku sítě. Vrací se výchozí hodnota.

Příklad

Následující příklad zkoumá podrobnosti vyhodnocení vrácené getBooleanDetails:

const details = await env.FLAGS.getBooleanDetails("my-feature", false, {
	userId: "user-42",
});

switch (details.reason) {
	case "TARGETING_MATCH":
		console.log(`Matched targeting rule, variant: ${details.variant}`);
		break;
	case "SPLIT":
		console.log(`Included in rollout, variant: ${details.variant}`);
		break;
	case "DEFAULT":
		console.log("No rule matched, using default variant");
		break;
	case "DISABLED":
		console.log("Flag is disabled");
		break;
}

if (details.errorCode) {
	console.error(`Evaluation error: ${details.errorCode}`);
}
const details = await env.FLAGS.getBooleanDetails("my-feature", false, {
	userId: "user-42",
});

switch (details.reason) {
	case "TARGETING_MATCH":
		console.log(`Matched targeting rule, variant: ${details.variant}`);
		break;
	case "SPLIT":
		console.log(`Included in rollout, variant: ${details.variant}`);
		break;
	case "DEFAULT":
		console.log("No rule matched, using default variant");
		break;
	case "DISABLED":
		console.log("Flag is disabled");
		break;
}

if (details.errorCode) {
	console.error(`Evaluation error: ${details.errorCode}`);
}