OFREP Bulk flag evaluation (Core API)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
既存の identity flag 評価エンドポイントとその他の課金対象エンドポイントから始め、それらの動作を OFREP evaluateFlagsBulk 仕様と比較します。SSE ストリームのルックアップを除外したうえで、bulk 評価、永続化、課金、ETag、条件付きレスポンスをカバーするように POST /ofrep/v1/evaluate/flags を実装してテストします。すべての受け入れ条件を満たせば完了です。
索引モデルが issue の本文から書いたものです。
説明
In order to implement the OFREP specification, our Core API needs a new endpoint that evaluates all flags in an environment given a set of identity traits. The Edge API counterpart is Flagsmith/edge-api#711.
An interpretation of the specification to our data model is as the following example:
(request)
POST /ofrep/v1/evaluate/flags HTTP/1.1
Host: {flagsmith_host}
X-API-Key: {client_side_environment_key}
Content-Type: application/json
{
"context": {
"targetingKey": "{identity.identifier}",
"trait1": "value1",
"trait2": "value2"
}
}
(response)
HTTP/1.1 200 OK
Content-Type: application/json
ETag: "{etag}"
{
"flags": [
{
"key": "{feature.name}",
"value": "{feature_state.feature_state_value}",
"reason": "TARGETING_MATCH"
},
{
"key": "{feature.name}",
"value": {feature_state.enabled},
"reason": "STATIC"
},
{
"key": "{feature.name}",
"value": "{multivariate_feature_option.value}",
"reason": "SPLIT",
"variant": "{multivariate_feature_option.key}"
}
],
"metadata": {
"version": "{environment.updated_at}"
}
}
Acceptance criteria
- Our API exposes a new endpoint
POST /ofrep/v1/evaluate/flagscompliant to the OFREP specification. As such, the endpoint:- Responds with an
ETagheader derived from the response body. - Accepts an
If-None-Matchheader which can lead to a304 Not Modifiedresponse. - Serves each flag's value as its remote configuration value, falling back to the flag's enabled state when no value is set.
- Reports each flag's evaluation reason using the vocabulary OFREP defines.
- Is billed similarly to other billed endpoints.
- Persists the identity and its traits on the same terms as identity flag evaluation.
- Responds with an
[!IMPORTANT]
Server-Sent Events stream lookups are out of scope for this issue.
- 主要言語
- Python
- スター
- 7.1k
- フォーク
- 603
- 平均マージ
- 3日 8時間
- マージ済み PR(30日)
- 102
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Flagsmith/flagsmith のほかの issue
-
Expose whether an organisation is blocked for API usage対応中かも @PiUnknown が 26 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
Flagsmith/flagsmith#8773 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
Environment colors mismatch in audit log view対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
Flagsmith/flagsmith#8681 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
influx_query_manager doesn't catch ApiException, so Influx error responses 500対応中かも @SAY-5 が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
Flagsmith/flagsmith#8510 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Sales dashboard: download_org_data 500s with "Object of type generator is not JSON serializable"対応中かも @Iflaqbhat が 46 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
Flagsmith/flagsmith の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
-
area:other help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
WingedGuardian/GENesis-AGI#4734 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
peach-mitao/peach#693 ·
メンテナーはふだん 1 日以内に返信
-
Failed result serialization destroys a previously saved JSON result対応中かも @chessing234 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
huggingface/evaluate#867 ·
-
FTP reads inside a transaction use a nonexistent staging path対応中かも @Harsh23Kashyap が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
fsspec/filesystem_spec#2463 ·
メンテナーはふだん 1 日以内に返信